#+AUTHOR:Joshua Branson
#+TITLE: GTK4
#+LATEX_HEADER: \usepackage{lmodern}
#+LATEX_HEADER: \usepackage[QX]{fontenc}
#+OPTIONS: H:10 toc:nil

* GTK3 cheatsheets

#+BEGIN_SRC sh :results output :exports both
apropos gtk
#+END_SRC

This outputs some really cool gtk commands.  Many of them are gtk examples:

gtk4-demo
gtk4-demo-application
gtk4-widget-factory

* Gtk Intro 

  Gtk is a C toolkit for building graphical applications for Linux,
  Mac, Windows, the Hurd, and probably some other operating systems.
  You'll need `pkg-config` and `GNU Make` to compile Gtk programs.

  - GLib is a library that brings object oriented programming to C.
  - GdkPixbuf lets you display images in Gtk applications.
  - Pango is a library for handling text in multiple languages.
  - ATK is an Accessibility Toolkit for Gtk.
  - Gobject Introspection that lets you query Gtk for functions, data,
    etc. for use in creating language bindings. 

    GTK is divided in 3 parts
  - GDK is an abstraction layer that lets GTK support Windows, X11,
    Wayland, and macOS
  - GSK is an abstraction that lets you render via openGL, vulkan or
    Cairo
  - GTK is the toolkit with widgets, etc.

* I should get a good idea of the GNOME User Interface Guidelines

  https://developer.gnome.org/hig/

  Gnome has an icon library

  org.gnome.design.IconLibrary

* Tree and List Widget overview

  Gtk uses a model/view/controller design, which means that the
  application has 1 data set, which is displayed in various views.  If
  the data set is updated, then the views also get updated.

  - GtkTreeView is a tree view widget
  - GtkTreeViewColumn is a 

  
